Getting Started with React – An Overview and Walkthrough – Tania Rascia
from React
Reactビギナー向けの記事を読んだときの記録
Getting Started with React – An Overview and Walkthrough – Tania Rascia
写経リポジトリ
/icons/github.icon https://github.com/kadoyau/tania-react-tutorial
必要な知識
HTML&CSS, JavaScript, DOMの理解、ES6の文法、Node.jsがインストールされていること
ゴール
JSX, components, props, state, lifecycleが理解できる
上記概念を利用した単純なアプリがつくれる
Reactとは
JavaScriptのライブラリ。(Angularとは違って)フレームワークではない
フロントでUIを構築するのにつかわれる
MVCアプリケーションでいうところのViewレイヤ
componentsは再利用できるHTML要素。効率的にUIを構築することができる
stateとpropsをつかってデータを保存したりハンドリングするのを合理的にやれる
ライブラリ
React:Reactのtop levelのAPI
React DOM:DOMに関連するメソッド
Babel
実践:Hello world
babelを使うときにはscript typeはtext/babelとする
component (React)をつくる
render()が最低限必要。DOMノードを描画するのに使われる。ここで返すのはstringではなくJSX
React DOMのrender()メソッドで作成したコンポーネントをHTMLのdiv要素に結びつけ、描画をする
できた。こわくないでしょ。たんなるHTMLにロードしたJavaScriptのヘルパライブラリだ。
Create React App
JavaScriptライブラリHTMLにロードして、BabelやReactをon the flyにレンダリングして…というのは非効率でメンテも難しい
Create React Appという、Reactのアプリを書くための環境が用意されてる
Webpackをつかって動的にReact, JSX, ES6, CSSをコンパイルするし、Linterもついてる
npxコマンドでローカルパッケージをうごかしていく
yarnだとyarn runで実行できるが、npxのようにパッケージのダウンロードはしてくれない
npxが結構良さそうな件について - Qiita
React Dev Toolのブラウザ拡張を入れるとこーどが複雑になったときに便利
JSX
componentのrender()の中に出てくるHTMLみたいなやつのこと
code:js
render() {
return (
<div className="App">
<h1>Hello, React!</h1>
</div>
);
}
JavaScript XMLの略
ReactではJSXが文法上は必須ではない
これらは等価(上:JSX、下:JSXを利用しない)
code:jsx
const heading = <h1 className="site-heading">Hello, React</h1>;
code:js
const heading = React.createElement(
'h1',
{className: 'site-heading'},
'Hello, React!'
);
JSXはHTMLよりJSに近い
classはJSの予約語なので、CSSのclassにはclassNameを使う
プロパティやメソッドはcamelCaseを使う
self-closingタグは/でおわらなければならない(例:<img />)
JSX中で{}を使うとこの中でJSが呼べる
component (React)
Reactは小さな多数のコンポーネントから構成されている
コンポーネントには2種類ある
class components
React.Componentsを継承して作る
render()が必要
simple components
fucntion
コンポーネントごとに1つのファイルに分けられている(わけなくてもいいが、手に負えなくなる)
componentは混ぜて使うことができる
componentは他のコンポーネントをネストできる
return()はたった一つの親要素のみ返すことができる
Props #props_(React)
Reactのよいところの一つはデータの扱い方
プロパティ(props)とstateを使って扱っていく
propsはリードオンリー
virtual DOMにstoreされる
/kadoyau/kadoyau.icon疑問
propsのスコープは?
State #state_(React)
リードオンリーなpropsの値を変更したいときに使う
Submitting Form Data
ここまででreadとdeleteはできるようになった。じゃあaddはどうするの?
ゴール:Formから入力したデータをAppに渡して、Tableが更新されるようにする
ここがなるほどという書き方
Pulling in API Data
JSでAPIを叩いた経験があんまりないなら How to Connect to an API with JavaScript – Tania Rascia を読む
fetch APIをつかってWikipediaのAPIをたたく
Lifecycle methodのcomponentDidMount()
ライフサイクルはメソッドが呼ばれる順番
詳しくは React.Component – React
MountingはDOMに挿入されたアイテムのこと
データを送る前にDOMがレンダリングされていてほしい
Lists and Keys – React
例に関する全体的な疑問kadoyau.icon
子のコンポーネントが親のstateのメソッドの詳細について知っているのはReactの作法?
俺が考えた最強の Reactのステートレスコンポーネントの書き方 - Qiita
Reactの型定義記法PropTypesを使うとインタフェースが切れる
TypeScriptを使うならinterfaceを代わりに使えばいい
TypeScriptでReact開発をするとPropTypesを書かなくてもよくなりそう - Qiita
Thinking in React – React